{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import *\n",
    "import numpy as np\n",
    "# def loadDateSet(filename, delim='\\t'):\n",
    "#     fr = open(filename)\n",
    "#     stringArr = [line.strip().split(delim) for line in fr.readlines()]\n",
    "#     datArr = [list(map(float,line)) for line in stringArr]\n",
    "#     return mat(datArr)\n",
    "def load(filename,delim='\\t'):\n",
    "    fr=open(filename)\n",
    "    dataSet = []\n",
    "    for line in fr.readlines():\n",
    "        # 切割每一行的数据\n",
    "        curLine = line.strip().split(delim)\n",
    "        # 将数据转换为浮点类型,便于后面的计算\n",
    "        # fltLine = [float(x) for x in curLine]\n",
    "        # 将数据追加到dataMat\n",
    "        fltLine = list(map(float,curLine))    # 映射所有的元素为 float（浮点数）类型\n",
    "        dataSet.append(fltLine)\n",
    "    return mat(dataSet)\n",
    " \n",
    "def pca(dataMat, topNfeat=9999999):\n",
    "    '''\n",
    "    desc:   topNfeat :可选参数，应用的N个特征\n",
    "    '''\n",
    "    # 计算减去原始数据集的平均值(每一个特征的平均值)\n",
    "    meanVals = mean(dataMat, axis=0) # 按列求平均\n",
    "    meanRemoved = dataMat - meanVals\n",
    "    print('meanRemoved:',meanRemoved)\n",
    "    \n",
    "    # 计算协方差矩阵\n",
    "    covMat = cov(meanRemoved, rowvar=0)\n",
    "    eigVals,eigVects = linalg.eig(mat(covMat)) # 协方差矩阵的特征值， 特征向量\n",
    "    print('eigVals:', eigVals)\n",
    "    print('eigVects:', eigVects)\n",
    "    '''\n",
    "    选取大的特征值对应的特征向量\n",
    "    '''\n",
    "    eigValInd = argsort(eigVals) # 特征值从小到大排列并输出其索引\n",
    "    eigValInd = eigValInd[:-(topNfeat+1):-1]  # 逆序就可以得到topNfeat个最大的特征值\n",
    "    redEigVects = eigVects[:,eigValInd]  # 选取最大的topNfeat个特征值对应的特征向量\n",
    "    \n",
    "    # 降维后的数据\n",
    "    lowDDataMat = meanRemoved * redEigVects   # 低维数据 \n",
    "    reconMat = (lowDDataMat * redEigVects.T) + meanVals # 原坐标系下的降维数据\n",
    "    return lowDDataMat, reconMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataMat=load('testSet.txt','\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 2)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataMat.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meanRemoved: [[ 1.17124956  2.22599482]\n",
      " [ 1.05840256  2.71499082]\n",
      " [ 0.12629956 -0.19105918]\n",
      " ...\n",
      " [ 0.79098556  0.10539082]\n",
      " [ 0.05064356  0.03821282]\n",
      " [ 1.27096256 -0.55239818]]\n",
      "eigVals: [0.36651371 2.89713496]\n",
      "eigVects: [[-0.85389096 -0.52045195]\n",
      " [ 0.52045195 -0.85389096]]\n"
     ]
    }
   ],
   "source": [
    "lowDDataMat, reconMat=pca(dataMat,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.51033597e+00],\n",
       "       [-2.86915379e+00],\n",
       "       [ 9.74108510e-02],\n",
       "       [-7.67782222e-01],\n",
       "       [ 1.02715333e+00],\n",
       "       [-1.44409178e+00],\n",
       "       [-2.17360352e+00],\n",
       "       [-7.73998803e-01],\n",
       "       [-1.09983463e+00],\n",
       "       [-1.70275987e+00],\n",
       "       [-5.39605615e-01],\n",
       "       [-9.15572638e-01],\n",
       "       [-2.42669452e+00],\n",
       "       [ 2.93613464e+00],\n",
       "       [ 3.92702506e-01],\n",
       "       [ 2.59205734e+00],\n",
       "       [ 4.96435625e-01],\n",
       "       [-1.52069930e+00],\n",
       "       [ 1.25471104e-01],\n",
       "       [ 1.41846162e+00],\n",
       "       [ 5.89902904e-01],\n",
       "       [ 6.69601540e-01],\n",
       "       [ 3.25466068e-01],\n",
       "       [ 1.18812333e+00],\n",
       "       [ 2.07790920e+00],\n",
       "       [ 3.24938650e-01],\n",
       "       [ 3.41109884e+00],\n",
       "       [ 1.92249899e+00],\n",
       "       [-6.57788287e-01],\n",
       "       [-3.56836313e-01],\n",
       "       [ 5.72240108e-02],\n",
       "       [ 1.13444036e+00],\n",
       "       [-2.47196176e-01],\n",
       "       [ 1.14678135e+00],\n",
       "       [ 1.62503940e+00],\n",
       "       [-2.11489136e+00],\n",
       "       [ 1.62262452e+00],\n",
       "       [ 1.56716102e+00],\n",
       "       [ 2.08128929e+00],\n",
       "       [-1.87248397e+00],\n",
       "       [-2.59122644e-01],\n",
       "       [ 3.27554269e+00],\n",
       "       [-5.23125148e-01],\n",
       "       [-9.49849182e-02],\n",
       "       [ 2.36167252e+00],\n",
       "       [-2.44575766e+00],\n",
       "       [ 7.38351339e-01],\n",
       "       [ 4.57201959e-01],\n",
       "       [-1.41699869e+00],\n",
       "       [-5.32635883e-01],\n",
       "       [ 1.02282596e+00],\n",
       "       [-1.12875453e+00],\n",
       "       [-7.13211110e-01],\n",
       "       [-3.38626446e+00],\n",
       "       [ 3.56810812e-02],\n",
       "       [ 1.23323789e+00],\n",
       "       [ 1.91755358e-01],\n",
       "       [ 1.73904540e+00],\n",
       "       [-3.03423471e-01],\n",
       "       [ 3.77647206e+00],\n",
       "       [-5.81375052e-01],\n",
       "       [ 1.79991218e-02],\n",
       "       [-3.79395293e-01],\n",
       "       [-2.34332814e+00],\n",
       "       [-2.79028309e+00],\n",
       "       [-7.42478770e-01],\n",
       "       [ 3.32781960e-01],\n",
       "       [-1.73923519e+00],\n",
       "       [-3.23978914e-01],\n",
       "       [ 1.87628361e+00],\n",
       "       [ 1.13600716e+00],\n",
       "       [ 3.71821790e+00],\n",
       "       [ 2.98795377e-01],\n",
       "       [-2.15069022e-01],\n",
       "       [ 1.86189180e+00],\n",
       "       [ 9.03742077e-01],\n",
       "       [ 6.91749081e-01],\n",
       "       [-1.50047299e+00],\n",
       "       [-1.05497444e+00],\n",
       "       [ 5.19689141e-01],\n",
       "       [ 7.62938979e-01],\n",
       "       [ 2.14058040e+00],\n",
       "       [-2.81440019e+00],\n",
       "       [ 2.36346352e+00],\n",
       "       [ 1.56402005e+00],\n",
       "       [ 3.39072385e-01],\n",
       "       [-3.01657993e+00],\n",
       "       [ 1.04787558e+00],\n",
       "       [-7.92653343e-01],\n",
       "       [-1.44976069e+00],\n",
       "       [ 2.19344433e+00],\n",
       "       [ 6.38752997e-02],\n",
       "       [-3.03560416e+00],\n",
       "       [ 5.80258997e-01],\n",
       "       [-1.03294677e+00],\n",
       "       [-4.06263150e-01],\n",
       "       [-7.71705258e-01],\n",
       "       [-1.07904354e+00],\n",
       "       [-9.57210091e-02],\n",
       "       [-1.76385675e+00],\n",
       "       [-2.33470825e-01],\n",
       "       [-2.61831197e+00],\n",
       "       [-1.36320190e+00],\n",
       "       [-9.04417393e-01],\n",
       "       [ 2.19534328e+00],\n",
       "       [ 3.23696800e+00],\n",
       "       [-1.17484616e+00],\n",
       "       [ 2.28103017e+00],\n",
       "       [ 4.85221802e-01],\n",
       "       [-3.52914508e-01],\n",
       "       [-1.12942177e+00],\n",
       "       [-2.58533840e-01],\n",
       "       [-1.51362380e+00],\n",
       "       [ 2.74226802e+00],\n",
       "       [ 9.44755793e-01],\n",
       "       [-1.96796286e+00],\n",
       "       [ 2.04241744e+00],\n",
       "       [ 2.94432626e+00],\n",
       "       [-6.52031649e-01],\n",
       "       [ 1.05496814e-01],\n",
       "       [ 2.34907974e+00],\n",
       "       [ 6.35084594e-01],\n",
       "       [ 8.21233548e-02],\n",
       "       [-1.25023068e+00],\n",
       "       [ 1.53669072e+00],\n",
       "       [-1.62396831e+00],\n",
       "       [ 1.46974307e+00],\n",
       "       [-1.81787653e+00],\n",
       "       [-1.27348362e+00],\n",
       "       [-1.45072614e+00],\n",
       "       [ 1.28318570e+00],\n",
       "       [ 7.88120021e-01],\n",
       "       [ 1.28183580e+00],\n",
       "       [ 1.31518762e-01],\n",
       "       [ 1.74532342e+00],\n",
       "       [-1.16566093e+00],\n",
       "       [-3.46926311e-01],\n",
       "       [ 3.34853433e-01],\n",
       "       [-4.89017300e-01],\n",
       "       [ 9.54194625e-01],\n",
       "       [-1.97872327e+00],\n",
       "       [ 1.72393836e+00],\n",
       "       [-1.53924505e+00],\n",
       "       [ 3.38847058e-01],\n",
       "       [ 1.98578308e+00],\n",
       "       [-1.10658540e+00],\n",
       "       [-2.22493118e+00],\n",
       "       [-2.28363824e-01],\n",
       "       [-3.11210520e-01],\n",
       "       [ 8.79513451e-01],\n",
       "       [ 3.53302123e-01],\n",
       "       [-8.25473961e-01],\n",
       "       [ 1.60085214e+00],\n",
       "       [-2.70164885e+00],\n",
       "       [ 1.02362306e+00],\n",
       "       [ 8.29051360e-01],\n",
       "       [ 1.62794085e-01],\n",
       "       [ 3.96211949e+00],\n",
       "       [ 2.90104679e-01],\n",
       "       [-2.35316382e+00],\n",
       "       [ 7.65752344e-01],\n",
       "       [ 5.12885212e-01],\n",
       "       [ 4.73898120e+00],\n",
       "       [-2.37977901e+00],\n",
       "       [ 3.77423573e+00],\n",
       "       [-7.49181572e-01],\n",
       "       [-5.01696499e-01],\n",
       "       [-2.05346503e+00],\n",
       "       [-1.52949423e+00],\n",
       "       [ 1.59440344e+00],\n",
       "       [ 1.88034865e+00],\n",
       "       [ 1.26786591e+00],\n",
       "       [ 1.04910024e+00],\n",
       "       [ 4.86457431e-01],\n",
       "       [-8.77268948e-01],\n",
       "       [-2.29259159e+00],\n",
       "       [ 5.72077743e-01],\n",
       "       [ 1.47752868e+00],\n",
       "       [-1.03770630e+00],\n",
       "       [ 4.82659602e-01],\n",
       "       [-7.22302862e-01],\n",
       "       [-8.76979193e-01],\n",
       "       [-2.39279773e+00],\n",
       "       [ 3.40696206e+00],\n",
       "       [ 1.04558703e+00],\n",
       "       [ 3.27728202e-01],\n",
       "       [ 2.53799818e+00],\n",
       "       [-1.51577259e+00],\n",
       "       [-1.51398220e+00],\n",
       "       [ 1.95340851e+00],\n",
       "       [ 4.42021707e-01],\n",
       "       [ 2.91236712e+00],\n",
       "       [-4.40714394e-01],\n",
       "       [ 1.89070073e+00],\n",
       "       [ 1.06510129e+00],\n",
       "       [-3.03569677e+00],\n",
       "       [ 6.82066736e-01],\n",
       "       [ 6.15556391e-01],\n",
       "       [-1.27272219e+00],\n",
       "       [ 2.66634301e+00],\n",
       "       [-6.69520698e-01],\n",
       "       [-5.90427420e-01],\n",
       "       [-6.66474162e-01],\n",
       "       [ 2.10739858e-01],\n",
       "       [-2.21920390e+00],\n",
       "       [ 1.30083926e+00],\n",
       "       [-1.59972048e+00],\n",
       "       [-9.23471652e-01],\n",
       "       [ 1.97515543e+00],\n",
       "       [-1.44930936e+00],\n",
       "       [ 9.59701556e-01],\n",
       "       [-2.57239968e+00],\n",
       "       [ 3.21841789e+00],\n",
       "       [-7.29746239e-01],\n",
       "       [-1.57406350e+00],\n",
       "       [ 5.94708677e-01],\n",
       "       [-8.75360499e-01],\n",
       "       [-8.54425791e-02],\n",
       "       [ 6.68120003e-01],\n",
       "       [ 1.98511875e+00],\n",
       "       [ 9.80940951e-01],\n",
       "       [-1.56600318e-01],\n",
       "       [ 1.31478513e+00],\n",
       "       [ 1.02057974e+00],\n",
       "       [ 3.30766608e-01],\n",
       "       [-1.01342792e+00],\n",
       "       [-1.80282399e+00],\n",
       "       [-1.05351271e+00],\n",
       "       [-1.11281913e+00],\n",
       "       [ 2.65376731e+00],\n",
       "       [ 1.77829535e+00],\n",
       "       [ 9.68961257e-01],\n",
       "       [ 1.34633444e+00],\n",
       "       [-1.84549808e+00],\n",
       "       [-4.20727517e-01],\n",
       "       [ 6.68671526e-01],\n",
       "       [ 9.83491050e-01],\n",
       "       [ 3.32521819e-01],\n",
       "       [-1.05044108e+00],\n",
       "       [ 2.19962593e+00],\n",
       "       [-2.36473453e-01],\n",
       "       [-4.93226797e-01],\n",
       "       [-7.38214593e-01],\n",
       "       [-4.51814951e+00],\n",
       "       [-3.30691882e+00],\n",
       "       [-9.78464894e-01],\n",
       "       [ 3.22997258e-01],\n",
       "       [-2.15629547e+00],\n",
       "       [ 8.79965866e-01],\n",
       "       [ 3.18534960e+00],\n",
       "       [ 1.08728955e+00],\n",
       "       [ 7.57690755e-01],\n",
       "       [ 1.10098421e+00],\n",
       "       [-3.71114599e+00],\n",
       "       [-2.37970615e+00],\n",
       "       [-1.54934939e+00],\n",
       "       [-5.65582172e-01],\n",
       "       [-1.23569163e+00],\n",
       "       [-1.42276872e+00],\n",
       "       [-1.41868090e+00],\n",
       "       [ 1.18857028e+00],\n",
       "       [-2.81500445e+00],\n",
       "       [-5.50925161e-01],\n",
       "       [ 1.97663859e-01],\n",
       "       [ 2.45198721e-01],\n",
       "       [ 1.51629158e+00],\n",
       "       [-4.75014758e-01],\n",
       "       [-1.35982988e+00],\n",
       "       [-3.90584730e+00],\n",
       "       [-1.73530199e+00],\n",
       "       [ 1.74625720e+00],\n",
       "       [-1.75898823e-01],\n",
       "       [-2.74434375e+00],\n",
       "       [-1.17493768e+00],\n",
       "       [-8.69634992e-01],\n",
       "       [-3.15766059e+00],\n",
       "       [-4.02276921e-01],\n",
       "       [-4.73951109e-01],\n",
       "       [-2.62347768e+00],\n",
       "       [ 8.56835766e-01],\n",
       "       [-4.23293757e-01],\n",
       "       [-1.92596011e+00],\n",
       "       [-1.80764185e+00],\n",
       "       [-3.85432273e-01],\n",
       "       [ 1.84393569e+00],\n",
       "       [ 1.08529197e+00],\n",
       "       [ 9.41611091e-01],\n",
       "       [ 1.16719075e+00],\n",
       "       [ 3.00844881e-01],\n",
       "       [ 3.02191697e-01],\n",
       "       [-7.35299979e-01],\n",
       "       [-1.25824541e-01],\n",
       "       [-1.34598761e+00],\n",
       "       [-1.07192842e+00],\n",
       "       [ 1.82551672e+00],\n",
       "       [ 7.18656998e-01],\n",
       "       [ 1.33497774e+00],\n",
       "       [-9.77862491e-01],\n",
       "       [-5.51134719e-01],\n",
       "       [ 1.60238963e+00],\n",
       "       [-7.68601439e-02],\n",
       "       [-2.28237276e+00],\n",
       "       [ 5.25412061e-01],\n",
       "       [-1.48110459e+00],\n",
       "       [ 2.72120356e-01],\n",
       "       [-3.69154640e+00],\n",
       "       [ 2.26389094e+00],\n",
       "       [ 4.73652776e+00],\n",
       "       [ 1.54663062e+00],\n",
       "       [-4.27749708e-01],\n",
       "       [ 7.26314562e-01],\n",
       "       [ 5.79505205e-01],\n",
       "       [ 5.19871460e-01],\n",
       "       [ 6.69632206e-02],\n",
       "       [-1.10941870e+00],\n",
       "       [-3.78250183e-01],\n",
       "       [ 2.46036086e+00],\n",
       "       [-4.90507725e-01],\n",
       "       [-2.06043086e+00],\n",
       "       [ 4.27383899e+00],\n",
       "       [-3.90043691e-01],\n",
       "       [ 1.15108400e+00],\n",
       "       [ 1.93329453e-02],\n",
       "       [ 1.62980099e+00],\n",
       "       [ 4.76659153e-01],\n",
       "       [-1.12593299e+00],\n",
       "       [-2.30982924e-01],\n",
       "       [-2.30172730e+00],\n",
       "       [ 2.28432481e+00],\n",
       "       [ 1.46882092e+00],\n",
       "       [ 3.38596432e+00],\n",
       "       [ 9.23215325e-01],\n",
       "       [ 1.71807389e+00],\n",
       "       [-6.30401881e-01],\n",
       "       [ 2.16494782e+00],\n",
       "       [ 4.52956907e+00],\n",
       "       [ 3.10086450e+00],\n",
       "       [ 7.42207273e-01],\n",
       "       [-2.20482602e+00],\n",
       "       [-1.67635383e+00],\n",
       "       [-1.19305091e+00],\n",
       "       [-9.60429610e-01],\n",
       "       [ 2.79657492e+00],\n",
       "       [-1.09838330e-01],\n",
       "       [-1.81282224e+00],\n",
       "       [ 6.59021891e-01],\n",
       "       [-8.94382705e-01],\n",
       "       [-5.66289445e-01],\n",
       "       [-6.78909600e-01],\n",
       "       [ 1.74465215e+00],\n",
       "       [-9.33360053e-01],\n",
       "       [ 6.47166029e-01],\n",
       "       [ 5.37717463e-01],\n",
       "       [ 4.75529443e-01],\n",
       "       [-2.70226774e+00],\n",
       "       [ 3.47304551e-01],\n",
       "       [ 1.62411857e+00],\n",
       "       [ 1.36154544e+00],\n",
       "       [-1.27827342e-01],\n",
       "       [ 4.27106217e-01],\n",
       "       [-1.28739459e+00],\n",
       "       [ 2.80620802e+00],\n",
       "       [-1.65554464e+00],\n",
       "       [ 2.92267556e+00],\n",
       "       [-4.20390628e-01],\n",
       "       [ 8.46128086e-01],\n",
       "       [-1.97393840e+00],\n",
       "       [ 2.28611140e+00],\n",
       "       [ 1.11808503e+00],\n",
       "       [-1.51618330e+00],\n",
       "       [-1.16538100e+00],\n",
       "       [-1.38261959e+00],\n",
       "       [ 7.35007551e-01],\n",
       "       [-6.09154791e-01],\n",
       "       [-2.07643572e+00],\n",
       "       [-1.34920024e-01],\n",
       "       [ 9.89494013e-01],\n",
       "       [-1.09095886e+00],\n",
       "       [-3.52718854e+00],\n",
       "       [-1.41923369e-01],\n",
       "       [-2.22326108e+00],\n",
       "       [-3.56236758e+00],\n",
       "       [-1.49681567e+00],\n",
       "       [ 1.02820946e+00],\n",
       "       [ 1.68788908e-01],\n",
       "       [ 1.71614442e-01],\n",
       "       [ 1.77971064e+00],\n",
       "       [-5.71245796e-01],\n",
       "       [-4.64299970e-01],\n",
       "       [-3.45129455e-01],\n",
       "       [-1.11196574e+00],\n",
       "       [ 4.58167317e-02],\n",
       "       [ 1.02559629e+00],\n",
       "       [ 4.28750710e-01],\n",
       "       [-1.80596549e+00],\n",
       "       [ 1.35455937e+00],\n",
       "       [ 2.20293388e+00],\n",
       "       [-7.11461649e-01],\n",
       "       [ 7.62957080e-01],\n",
       "       [-1.35579955e+00],\n",
       "       [-4.67378089e-01],\n",
       "       [-1.47529918e+00],\n",
       "       [-1.12637213e+00],\n",
       "       [ 3.64233734e+00],\n",
       "       [ 4.01271625e-01],\n",
       "       [-5.16093525e-02],\n",
       "       [ 5.57609643e+00],\n",
       "       [-1.14824243e+00],\n",
       "       [ 1.70386826e-01],\n",
       "       [ 1.89237003e+00],\n",
       "       [ 1.74400310e+00],\n",
       "       [-5.92871371e-01],\n",
       "       [ 1.74851068e+00],\n",
       "       [ 1.78300731e+00],\n",
       "       [ 2.73688530e+00],\n",
       "       [-5.44653378e+00],\n",
       "       [-2.34937187e+00],\n",
       "       [ 1.12089622e+00],\n",
       "       [ 5.12433202e+00],\n",
       "       [ 3.07281001e+00],\n",
       "       [-1.28875406e+00],\n",
       "       [ 1.02692749e-01],\n",
       "       [-8.54526355e-01],\n",
       "       [-4.17940288e+00],\n",
       "       [-2.39030595e-01],\n",
       "       [-5.85102923e-01],\n",
       "       [ 2.62283008e+00],\n",
       "       [ 1.02563800e+00],\n",
       "       [ 2.90970676e+00],\n",
       "       [ 1.11402601e+00],\n",
       "       [-3.88483039e+00],\n",
       "       [ 3.63648204e-01],\n",
       "       [-9.43043301e-01],\n",
       "       [ 2.40288175e+00],\n",
       "       [-2.29314405e+00],\n",
       "       [ 5.46656719e-01],\n",
       "       [-1.98557581e+00],\n",
       "       [ 2.38468360e+00],\n",
       "       [ 1.39597147e+00],\n",
       "       [-2.02303705e-01],\n",
       "       [-5.16784365e+00],\n",
       "       [-1.88729111e+00],\n",
       "       [-4.76889804e-01],\n",
       "       [ 2.77994099e-01],\n",
       "       [ 4.64252059e-01],\n",
       "       [-1.75737866e+00],\n",
       "       [-4.22574784e-02],\n",
       "       [ 1.49784768e+00],\n",
       "       [ 1.01778838e+00],\n",
       "       [ 3.03236102e+00],\n",
       "       [ 1.83856173e+00],\n",
       "       [-1.07001728e+00],\n",
       "       [-2.61995314e+00],\n",
       "       [-2.10921219e+00],\n",
       "       [-2.28256740e+00],\n",
       "       [ 3.24025107e+00],\n",
       "       [ 7.96156933e-01],\n",
       "       [ 1.57026656e+00],\n",
       "       [ 2.86173419e+00],\n",
       "       [-4.38384468e-02],\n",
       "       [ 3.07172983e-02],\n",
       "       [ 1.80874790e+00],\n",
       "       [-1.04290668e+00],\n",
       "       [ 3.98006392e-01],\n",
       "       [ 1.53034452e+00],\n",
       "       [-1.82179816e+00],\n",
       "       [ 1.03604415e+00],\n",
       "       [-2.67551271e+00],\n",
       "       [ 8.18227762e-01],\n",
       "       [ 1.96066406e+00],\n",
       "       [-2.65995979e-02],\n",
       "       [ 7.97009436e-01],\n",
       "       [-3.44677667e-01],\n",
       "       [-4.62560754e-02],\n",
       "       [-8.26109275e-01],\n",
       "       [ 1.70430712e+00],\n",
       "       [ 4.11348273e-01],\n",
       "       [ 6.23382492e-01],\n",
       "       [ 2.70381945e+00],\n",
       "       [ 2.49810805e+00],\n",
       "       [-3.09520765e+00],\n",
       "       [-2.17488313e+00],\n",
       "       [ 2.00524045e+00],\n",
       "       [ 1.32972616e+00],\n",
       "       [ 3.17655261e+00],\n",
       "       [ 1.26716772e+00],\n",
       "       [ 1.23916282e+00],\n",
       "       [ 6.75159325e-01],\n",
       "       [-1.69643694e+00],\n",
       "       [ 4.22733724e+00],\n",
       "       [ 1.70035348e+00],\n",
       "       [-2.73588104e+00],\n",
       "       [-3.44309835e-01],\n",
       "       [ 9.63049964e-01],\n",
       "       [-1.40432367e+00],\n",
       "       [ 9.98456728e-01],\n",
       "       [-6.17951394e-01],\n",
       "       [ 2.36805187e-01],\n",
       "       [ 9.49028717e-01],\n",
       "       [-3.18580162e-01],\n",
       "       [ 7.28033033e-01],\n",
       "       [-2.09930261e+00],\n",
       "       [-3.19398809e-01],\n",
       "       [-1.06274347e-01],\n",
       "       [ 5.13844908e-01],\n",
       "       [-1.80706841e+00],\n",
       "       [-6.15471814e-01],\n",
       "       [ 3.71194990e-01],\n",
       "       [-8.50152108e-01],\n",
       "       [ 1.44318720e-01],\n",
       "       [-6.88368065e-01],\n",
       "       [ 7.27552989e-02],\n",
       "       [ 5.25387290e-01],\n",
       "       [ 2.09121559e+00],\n",
       "       [-4.66123649e-01],\n",
       "       [-1.48112558e-01],\n",
       "       [ 1.10341227e+00],\n",
       "       [ 9.12913436e-01],\n",
       "       [ 2.39160023e-01],\n",
       "       [-1.51324494e+00],\n",
       "       [ 4.20384664e-01],\n",
       "       [ 1.38055468e+00],\n",
       "       [-3.44299063e+00],\n",
       "       [-1.38166776e+00],\n",
       "       [-5.35146626e-01],\n",
       "       [ 1.18733595e+00],\n",
       "       [-6.75987608e-01],\n",
       "       [-2.33762385e-02],\n",
       "       [ 1.75785892e+00],\n",
       "       [ 1.38741215e+00],\n",
       "       [ 1.67927404e+00],\n",
       "       [-8.55177729e-01],\n",
       "       [ 1.04071681e+00],\n",
       "       [-3.13459901e-01],\n",
       "       [-4.97239881e-01],\n",
       "       [ 2.29345563e-01],\n",
       "       [-1.71371197e+00],\n",
       "       [-8.43357779e-01],\n",
       "       [-9.87852735e-01],\n",
       "       [-5.74790268e-01],\n",
       "       [-2.95414892e-01],\n",
       "       [-1.03375658e+00],\n",
       "       [ 1.11811977e+00],\n",
       "       [ 1.14691563e+00],\n",
       "       [ 3.43884157e-01],\n",
       "       [ 9.46722027e-01],\n",
       "       [ 1.22077707e+00],\n",
       "       [-1.24912076e+00],\n",
       "       [ 6.47902070e-01],\n",
       "       [ 1.94469879e-01],\n",
       "       [ 1.25907244e+00],\n",
       "       [-8.20214120e-02],\n",
       "       [ 3.39733239e+00],\n",
       "       [-2.19433999e+00],\n",
       "       [-1.38708572e+00],\n",
       "       [ 1.35050137e+00],\n",
       "       [-1.63163934e+00],\n",
       "       [ 2.79845021e+00],\n",
       "       [-1.40355915e+00],\n",
       "       [ 2.80963913e-01],\n",
       "       [ 1.10121283e+00],\n",
       "       [-2.24872889e+00],\n",
       "       [ 6.88349326e-01],\n",
       "       [ 2.80963440e-01],\n",
       "       [ 4.38673157e-01],\n",
       "       [ 3.83003378e-01],\n",
       "       [ 5.66243058e-01],\n",
       "       [-6.89164557e-02],\n",
       "       [ 1.74221676e+00],\n",
       "       [-9.63088348e-02],\n",
       "       [-5.42940287e-01],\n",
       "       [ 9.82783016e-01],\n",
       "       [-1.17018035e+00],\n",
       "       [ 1.79389667e+00],\n",
       "       [-1.27303572e+00],\n",
       "       [-9.04933293e-01],\n",
       "       [ 4.03027707e-02],\n",
       "       [ 1.80992602e-01],\n",
       "       [ 1.08223749e-01],\n",
       "       [-1.28754078e+00],\n",
       "       [-5.96987503e-01],\n",
       "       [-9.95115329e-01],\n",
       "       [-1.77790604e+00],\n",
       "       [ 1.50434943e+00],\n",
       "       [-1.63286697e+00],\n",
       "       [ 4.45879341e-01],\n",
       "       [ 1.64106375e+00],\n",
       "       [ 1.23242254e-01],\n",
       "       [ 2.42123836e+00],\n",
       "       [-1.58748272e+00],\n",
       "       [-8.66593170e-01],\n",
       "       [-2.25929095e+00],\n",
       "       [-8.49080074e-01],\n",
       "       [ 5.88771370e-01],\n",
       "       [ 9.05835506e-01],\n",
       "       [-4.11287025e-01],\n",
       "       [-6.19813787e-01],\n",
       "       [-2.07716725e-01],\n",
       "       [-3.41654393e+00],\n",
       "       [-7.18173400e-01],\n",
       "       [-9.39769950e-01],\n",
       "       [-4.07059017e-01],\n",
       "       [ 3.34665514e+00],\n",
       "       [ 7.22613674e-01],\n",
       "       [ 1.04191676e+00],\n",
       "       [-1.89747377e+00],\n",
       "       [ 1.26020398e+00],\n",
       "       [-1.43012571e+00],\n",
       "       [ 2.36112558e-01],\n",
       "       [ 1.44755902e+00],\n",
       "       [-3.67157332e+00],\n",
       "       [ 2.59057878e-01],\n",
       "       [ 2.12471488e+00],\n",
       "       [-5.07145230e+00],\n",
       "       [ 2.34800925e+00],\n",
       "       [-1.86936256e-01],\n",
       "       [ 7.24800043e-01],\n",
       "       [-2.06100007e+00],\n",
       "       [-2.27516577e+00],\n",
       "       [ 1.07510433e+00],\n",
       "       [-4.09670678e-01],\n",
       "       [ 5.21822258e-01],\n",
       "       [-1.80487938e+00],\n",
       "       [-2.60831538e+00],\n",
       "       [ 2.16618398e+00],\n",
       "       [ 4.38638696e-01],\n",
       "       [-1.80836597e+00],\n",
       "       [ 3.72991636e-01],\n",
       "       [ 9.63901525e-01],\n",
       "       [-2.31844554e+00],\n",
       "       [-1.31393208e+00],\n",
       "       [ 2.03206111e+00],\n",
       "       [-4.06967733e+00],\n",
       "       [-1.70128516e+00],\n",
       "       [ 1.72254088e+00],\n",
       "       [ 4.65146233e-01],\n",
       "       [-2.42332839e+00],\n",
       "       [-4.72238399e-01],\n",
       "       [-6.08468375e-01],\n",
       "       [-2.36037241e+00],\n",
       "       [-3.24564745e-01],\n",
       "       [ 8.26249854e-01],\n",
       "       [-3.75999166e-01],\n",
       "       [-3.26667086e-01],\n",
       "       [-5.22406106e-01],\n",
       "       [-8.08501039e-01],\n",
       "       [ 3.11324078e+00],\n",
       "       [-1.84031051e+00],\n",
       "       [ 1.99369995e+00],\n",
       "       [-2.72057948e+00],\n",
       "       [-2.40958971e+00],\n",
       "       [ 2.50485014e+00],\n",
       "       [ 5.47335862e-01],\n",
       "       [ 2.38129700e+00],\n",
       "       [ 1.08887695e+00],\n",
       "       [-3.54943981e+00],\n",
       "       [ 3.27854391e+00],\n",
       "       [ 1.76193772e+00],\n",
       "       [-2.33827891e+00],\n",
       "       [ 2.59217682e+00],\n",
       "       [ 1.85685833e+00],\n",
       "       [ 8.83801722e-01],\n",
       "       [-1.29802933e-03],\n",
       "       [ 2.79101915e+00],\n",
       "       [ 1.61049425e+00],\n",
       "       [ 6.54624843e-01],\n",
       "       [ 9.77787978e-01],\n",
       "       [ 3.00734688e+00],\n",
       "       [-1.48572338e+00],\n",
       "       [-2.96012670e-01],\n",
       "       [ 1.59667689e+00],\n",
       "       [ 8.51233977e-01],\n",
       "       [ 3.47001780e-01],\n",
       "       [ 6.06081213e-01],\n",
       "       [-1.39543967e+00],\n",
       "       [-1.31417254e+00],\n",
       "       [-1.65593340e-02],\n",
       "       [ 1.92801990e-01],\n",
       "       [ 2.11240554e+00],\n",
       "       [ 8.64300605e-01],\n",
       "       [ 1.82742668e+00],\n",
       "       [-9.27692964e-01],\n",
       "       [ 5.65239772e-01],\n",
       "       [-8.88522651e-01],\n",
       "       [-4.51912070e-01],\n",
       "       [ 7.92776353e-01],\n",
       "       [-2.82646499e-01],\n",
       "       [-7.36845070e-01],\n",
       "       [ 4.75262609e-02],\n",
       "       [-1.02263142e+00],\n",
       "       [-6.49274244e-01],\n",
       "       [-8.52467948e-01],\n",
       "       [-2.26566652e+00],\n",
       "       [ 1.15382179e+00],\n",
       "       [ 3.62840707e+00],\n",
       "       [ 1.48369745e+00],\n",
       "       [ 9.77017152e-01],\n",
       "       [ 1.47308542e+00],\n",
       "       [ 3.33441790e+00],\n",
       "       [-1.49375844e+00],\n",
       "       [ 7.41377504e-01],\n",
       "       [-1.95905333e+00],\n",
       "       [-1.79842979e+00],\n",
       "       [-1.75606204e+00],\n",
       "       [-2.61665290e+00],\n",
       "       [ 1.88397265e-01],\n",
       "       [ 1.17067057e+00],\n",
       "       [-2.11753149e+00],\n",
       "       [-1.52084251e-01],\n",
       "       [-2.78480606e+00],\n",
       "       [-1.26457530e+00],\n",
       "       [-1.68731398e+00],\n",
       "       [-3.66036151e-01],\n",
       "       [-3.11313038e+00],\n",
       "       [ 2.17916347e+00],\n",
       "       [-2.13576640e+00],\n",
       "       [-1.14935540e-01],\n",
       "       [ 2.46289618e+00],\n",
       "       [-1.74945829e+00],\n",
       "       [-1.56602350e+00],\n",
       "       [ 4.98023787e-01],\n",
       "       [-6.20821823e-01],\n",
       "       [ 6.80181945e-01],\n",
       "       [ 1.71535454e-01],\n",
       "       [-5.47494905e-01],\n",
       "       [-7.36803853e-01],\n",
       "       [-2.59720704e+00],\n",
       "       [ 2.82570600e+00],\n",
       "       [-5.70512930e-02],\n",
       "       [ 3.40589179e+00],\n",
       "       [-3.02839451e+00],\n",
       "       [ 1.84860098e+00],\n",
       "       [ 2.69631673e+00],\n",
       "       [-4.13600311e-01],\n",
       "       [-1.77765135e+00],\n",
       "       [-1.97328948e+00],\n",
       "       [ 2.95861423e-01],\n",
       "       [-1.34007426e+00],\n",
       "       [-4.52250442e-01],\n",
       "       [ 1.12726927e+00],\n",
       "       [ 2.25077886e-01],\n",
       "       [ 9.44749241e-01],\n",
       "       [-2.93084150e-01],\n",
       "       [ 2.46473545e+00],\n",
       "       [-1.31083489e+00],\n",
       "       [ 7.07946458e-01],\n",
       "       [-4.84962388e-01],\n",
       "       [-3.73633751e-02],\n",
       "       [-6.21184925e-01],\n",
       "       [ 2.42635821e+00],\n",
       "       [ 4.17971651e-01],\n",
       "       [ 6.54325246e-01],\n",
       "       [-7.77237433e-01],\n",
       "       [ 2.35272118e-01],\n",
       "       [-1.36217337e+00],\n",
       "       [ 8.09513985e-01],\n",
       "       [-1.26281361e+00],\n",
       "       [-4.51727824e-01],\n",
       "       [-4.31961457e+00],\n",
       "       [-2.66954988e+00],\n",
       "       [-3.37346655e-01],\n",
       "       [-1.34738677e+00],\n",
       "       [ 2.79997366e+00],\n",
       "       [-1.23437507e+00],\n",
       "       [-2.14847268e+00],\n",
       "       [-1.64870337e+00],\n",
       "       [ 3.76933693e-03],\n",
       "       [ 1.34876002e+00],\n",
       "       [ 8.61732828e-01],\n",
       "       [ 2.72932446e+00],\n",
       "       [ 1.17127558e+00],\n",
       "       [ 2.49980775e+00],\n",
       "       [-3.67601235e-01],\n",
       "       [-3.27930402e+00],\n",
       "       [-2.36800578e+00],\n",
       "       [-4.06684220e-01],\n",
       "       [-6.27255666e-01],\n",
       "       [-1.53179416e+00],\n",
       "       [-8.77559318e-03],\n",
       "       [ 7.83064240e-01],\n",
       "       [ 4.76786710e-01],\n",
       "       [-1.73548357e+00],\n",
       "       [ 1.22828801e+00],\n",
       "       [ 2.29966079e+00],\n",
       "       [ 6.07674268e-01],\n",
       "       [-7.67073691e-01],\n",
       "       [ 1.20516676e+00],\n",
       "       [ 7.97844668e-01],\n",
       "       [ 1.25847739e+00],\n",
       "       [-3.25265996e+00],\n",
       "       [ 2.95473034e-01],\n",
       "       [-8.74721146e-01],\n",
       "       [ 1.18604011e+00],\n",
       "       [ 1.05283237e+00],\n",
       "       [-2.56715960e-01],\n",
       "       [-3.47446814e+00],\n",
       "       [-1.85706741e+00],\n",
       "       [ 3.06222773e+00],\n",
       "       [ 7.37787988e-02],\n",
       "       [ 8.01168049e-01],\n",
       "       [-2.14410586e+00],\n",
       "       [ 2.46373437e+00],\n",
       "       [-4.20304828e-01],\n",
       "       [ 7.16531534e-01],\n",
       "       [-3.93402339e+00],\n",
       "       [ 2.40466653e+00],\n",
       "       [-1.34303582e-01],\n",
       "       [ 7.97865579e-01],\n",
       "       [-1.79823153e+00],\n",
       "       [-2.31923581e+00],\n",
       "       [ 2.03924572e+00],\n",
       "       [-9.27123043e-01],\n",
       "       [ 9.48534302e-01],\n",
       "       [ 1.73653909e+00],\n",
       "       [ 9.32222462e-01],\n",
       "       [ 2.80690040e-01],\n",
       "       [-4.40429973e+00],\n",
       "       [-2.00778961e+00],\n",
       "       [ 3.23335540e+00],\n",
       "       [ 1.69908933e-01],\n",
       "       [ 1.07845716e+00],\n",
       "       [-1.41079779e-01],\n",
       "       [ 6.18422650e-01],\n",
       "       [ 1.86142282e+00],\n",
       "       [-1.97121181e+00],\n",
       "       [-1.05741195e+00],\n",
       "       [-1.23847330e+00],\n",
       "       [ 1.75224785e+00],\n",
       "       [ 1.88985417e+00],\n",
       "       [-2.69148854e+00],\n",
       "       [ 2.37674803e-01],\n",
       "       [ 1.86595902e-01],\n",
       "       [ 4.86298942e-01],\n",
       "       [ 2.42239813e+00],\n",
       "       [-2.62425305e+00],\n",
       "       [-2.69892765e+00],\n",
       "       [ 7.62917555e-01],\n",
       "       [ 1.22424425e+00],\n",
       "       [ 1.91838284e+00],\n",
       "       [-1.20133025e+00],\n",
       "       [-1.00230192e+00],\n",
       "       [ 2.49658688e-01],\n",
       "       [-8.76428114e-01],\n",
       "       [ 4.40019462e-01],\n",
       "       [-1.70035098e+00],\n",
       "       [-2.40235622e+00],\n",
       "       [ 6.16707885e-01],\n",
       "       [ 7.47197811e-01],\n",
       "       [ 1.88259378e+00],\n",
       "       [-1.25363641e-01],\n",
       "       [ 7.30862291e-02],\n",
       "       [-1.86521330e+00],\n",
       "       [ 1.06030684e+00],\n",
       "       [-9.58706411e-01],\n",
       "       [-2.41819053e+00],\n",
       "       [ 9.06230130e-01],\n",
       "       [-1.53847900e+00],\n",
       "       [-1.69596553e-01],\n",
       "       [ 4.25284470e-01],\n",
       "       [-1.11415654e+00],\n",
       "       [ 2.93565709e+00],\n",
       "       [ 1.92623667e-01],\n",
       "       [ 1.38109678e+00],\n",
       "       [ 1.57531054e+00],\n",
       "       [ 1.55217685e+00],\n",
       "       [ 7.12361752e-01],\n",
       "       [ 9.32850536e-01],\n",
       "       [ 2.68514127e+00],\n",
       "       [ 5.01020927e-02],\n",
       "       [ 2.63649830e+00],\n",
       "       [-5.38135110e-01],\n",
       "       [-7.07181272e-01],\n",
       "       [ 9.67536020e-01],\n",
       "       [-2.78574107e+00],\n",
       "       [-1.55204590e+00],\n",
       "       [-2.86845621e+00],\n",
       "       [ 3.55393542e-01],\n",
       "       [ 2.30220406e+00],\n",
       "       [-9.81297623e-01],\n",
       "       [-1.66412371e+00],\n",
       "       [ 3.24627333e+00],\n",
       "       [ 7.39922817e-01],\n",
       "       [-7.56830798e-01],\n",
       "       [ 1.22928963e+00],\n",
       "       [-7.33368584e-01],\n",
       "       [ 1.23212113e+00],\n",
       "       [-1.28650494e-01],\n",
       "       [ 2.50215584e+00],\n",
       "       [ 5.16339813e-02],\n",
       "       [-4.32051648e+00],\n",
       "       [-1.07495847e+00],\n",
       "       [ 2.54902550e+00],\n",
       "       [-2.09738510e+00],\n",
       "       [ 3.16085381e+00],\n",
       "       [-1.96530881e+00],\n",
       "       [ 2.23539303e+00],\n",
       "       [-1.05771472e+00],\n",
       "       [-9.68946299e-01],\n",
       "       [-1.25938151e+00],\n",
       "       [ 4.18706828e-01],\n",
       "       [ 2.47859433e+00],\n",
       "       [ 1.71988262e+00],\n",
       "       [ 3.90182036e+00],\n",
       "       [-2.41497576e-01],\n",
       "       [-2.47902320e+00],\n",
       "       [ 1.56810072e+00],\n",
       "       [-1.40327186e+00],\n",
       "       [-1.36358194e+00],\n",
       "       [ 9.38910677e-01],\n",
       "       [ 7.62843279e-01],\n",
       "       [-6.04873185e-02],\n",
       "       [-5.03374244e+00],\n",
       "       [ 3.86843532e-01],\n",
       "       [ 3.05849359e+00],\n",
       "       [ 1.20966516e+00],\n",
       "       [ 5.56806487e-01],\n",
       "       [-2.41080045e+00],\n",
       "       [-4.37390651e-01],\n",
       "       [-8.20870525e-01],\n",
       "       [ 1.47509974e+00],\n",
       "       [ 1.30173806e+00],\n",
       "       [ 7.50506951e-01],\n",
       "       [ 2.31408441e+00],\n",
       "       [-1.89605674e+00],\n",
       "       [-2.03330435e+00],\n",
       "       [-1.41431265e+00],\n",
       "       [-1.84617606e+00],\n",
       "       [ 5.63345560e-02],\n",
       "       [-1.23696151e-01],\n",
       "       [-1.59565171e+00],\n",
       "       [ 1.42792946e+00],\n",
       "       [-2.03672420e+00],\n",
       "       [ 1.17879420e+00],\n",
       "       [-1.28309550e+00],\n",
       "       [-1.53971833e+00],\n",
       "       [ 8.03997065e-02],\n",
       "       [ 2.15611820e+00],\n",
       "       [ 6.09946441e-01],\n",
       "       [-9.02965533e-02],\n",
       "       [ 1.32880436e+00],\n",
       "       [-1.05268895e+00],\n",
       "       [ 4.73860496e+00],\n",
       "       [-1.83197623e+00],\n",
       "       [ 1.21781618e+00],\n",
       "       [ 2.05645119e+00],\n",
       "       [-6.67562139e-02],\n",
       "       [-1.85148663e-01],\n",
       "       [-2.38129448e+00],\n",
       "       [-9.54570119e-01],\n",
       "       [ 2.07300378e+00],\n",
       "       [ 1.26543445e+00],\n",
       "       [ 1.11210073e+00],\n",
       "       [-9.39844563e-01],\n",
       "       [ 1.60641862e+00],\n",
       "       [-3.94478734e-01],\n",
       "       [ 1.62558684e+00],\n",
       "       [-6.89618554e-01],\n",
       "       [-1.71597759e+00],\n",
       "       [-2.12898551e+00],\n",
       "       [-2.22647626e+00],\n",
       "       [ 3.16509371e-01],\n",
       "       [-1.54171112e+00],\n",
       "       [ 1.85164389e-01],\n",
       "       [-2.94293943e+00],\n",
       "       [-2.80202806e+00],\n",
       "       [-2.14267990e+00],\n",
       "       [ 4.44297535e-01],\n",
       "       [ 1.33021957e+00],\n",
       "       [-1.27007455e+00],\n",
       "       [-1.81187889e+00],\n",
       "       [-2.00408767e+00],\n",
       "       [-2.78866710e+00],\n",
       "       [ 2.61077985e+00],\n",
       "       [-1.68818839e+00],\n",
       "       [-3.42886326e+00],\n",
       "       [-2.32578349e+00],\n",
       "       [ 3.19557812e-01],\n",
       "       [-4.82576149e-02],\n",
       "       [ 1.72732091e+00],\n",
       "       [ 2.82751419e+00],\n",
       "       [-2.32313078e+00],\n",
       "       [-1.24901359e+00],\n",
       "       [ 9.00062101e-01],\n",
       "       [ 1.54088291e+00],\n",
       "       [-1.54299587e+00],\n",
       "       [-1.49774022e+00],\n",
       "       [-6.32237850e-02],\n",
       "       [-2.58174453e+00],\n",
       "       [-8.85797208e-01],\n",
       "       [ 1.63897623e+00],\n",
       "       [ 6.57907228e-01],\n",
       "       [-5.63154780e-01],\n",
       "       [ 4.61895650e-01],\n",
       "       [ 1.14697160e+00],\n",
       "       [-1.91077747e+00],\n",
       "       [ 4.94030110e+00],\n",
       "       [-1.37359603e+00],\n",
       "       [-5.01662249e-01],\n",
       "       [-5.89871235e-02],\n",
       "       [-1.89787138e-01]])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array(lowDDataMat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 2)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reconMat.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111)\n",
    "ax.scatter(dataMat[:,0].flatten().A[0], dataMat[:,1].flatten().A[0], marker='^', s=90)\n",
    "ax.scatter(reconMat[:,0].flatten().A[0], reconMat[:,1].flatten().A[0], marker='o', s=50, c='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "def replaceNanWithMean():\n",
    "    datMat = load('secom.data', ' ')\n",
    "    numFeat = shape(datMat)[1]\n",
    "    for i in range(numFeat):\n",
    "        # 对value不为NaN的求均值\n",
    "        # .A 返回矩阵基于的数组\n",
    "        meanVal = mean(datMat[nonzero(~isnan(datMat[:, i].A))[0], i])\n",
    "        # 将value为NaN的值赋值为均值\n",
    "        datMat[nonzero(isnan(datMat[:, i].A))[0],i] = meanVal\n",
    "    return datMat\n",
    "\n",
    "# def replaceNanWithMean():\n",
    "#     datMat = loadDateSet('secom.data', ' ')\n",
    "#     numFeat = shape(dataMat)[1]\n",
    "#     for i in range(numFeat):\n",
    "#         meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number)\n",
    "#         datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal  #set NaN values to mean\n",
    "#     return datMat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[3.03093000e+03, 2.56400000e+03, 2.18773330e+03, ...,\n",
       "         1.64749042e-02, 5.28333333e-03, 9.96700663e+01],\n",
       "        [3.09578000e+03, 2.46514000e+03, 2.23042220e+03, ...,\n",
       "         2.01000000e-02, 6.00000000e-03, 2.08204500e+02],\n",
       "        [2.93261000e+03, 2.55994000e+03, 2.18641110e+03, ...,\n",
       "         4.84000000e-02, 1.48000000e-02, 8.28602000e+01],\n",
       "        ...,\n",
       "        [2.97881000e+03, 2.37978000e+03, 2.20630000e+03, ...,\n",
       "         8.60000000e-03, 2.50000000e-03, 4.35231000e+01],\n",
       "        [2.89492000e+03, 2.53201000e+03, 2.17703330e+03, ...,\n",
       "         2.45000000e-02, 7.50000000e-03, 9.34941000e+01],\n",
       "        [2.94492000e+03, 2.45076000e+03, 2.19544440e+03, ...,\n",
       "         1.62000000e-02, 4.50000000e-03, 1.37784400e+02]])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data=replaceNanWithMean()\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meanRemoved: [[ 1.64771044e+01  6.81497692e+01 -1.28140177e+01 ...  2.77555756e-17\n",
      "   1.99493200e-17  1.70530257e-13]\n",
      " [ 8.13271044e+01 -3.07102308e+01  2.98748823e+01 ...  3.62509579e-03\n",
      "   7.16666667e-04  1.08534434e+02]\n",
      " [-8.18428956e+01  6.40897692e+01 -1.41362177e+01 ...  3.19250958e-02\n",
      "   9.51666667e-03 -1.68098663e+01]\n",
      " ...\n",
      " [-3.56428956e+01 -1.16070231e+02  5.75268229e+00 ... -7.87490421e-03\n",
      "  -2.78333333e-03 -5.61469663e+01]\n",
      " [-1.19532896e+02  3.61597692e+01 -2.35140177e+01 ...  8.02509579e-03\n",
      "   2.21666667e-03 -6.17596635e+00]\n",
      " [-6.95328956e+01 -4.50902308e+01 -5.10291771e+00 ... -2.74904215e-04\n",
      "  -7.83333333e-04  3.81143337e+01]]\n",
      "eigVals: [ 5.34151979e+07  2.17466719e+07  8.24837662e+06  2.07388086e+06\n",
      "  1.31540439e+06  4.67693557e+05  2.90863555e+05  2.83668601e+05\n",
      "  2.37155830e+05  2.08513836e+05  1.96098849e+05  1.86856549e+05\n",
      "  1.52422354e+05  1.13215032e+05  1.08493848e+05  1.02849533e+05\n",
      "  1.00166164e+05  8.33473762e+04  8.15850591e+04  7.76560524e+04\n",
      "  6.66060410e+04  6.52620058e+04  5.96776503e+04  5.16269933e+04\n",
      "  5.03324580e+04  4.54661746e+04  4.41914029e+04  4.15532551e+04\n",
      "  3.55294040e+04  3.31436743e+04  2.67385181e+04  1.47123429e+04\n",
      "  1.44089194e+04  1.09321187e+04  1.04841308e+04  9.48876548e+03\n",
      "  8.34665462e+03  7.22765535e+03  5.34196392e+03  4.95614671e+03\n",
      "  4.23060022e+03  4.10673182e+03  3.41199406e+03  3.24193522e+03\n",
      "  2.74523635e+03  2.35027999e+03  2.16835314e+03  1.86414157e+03\n",
      "  1.76741826e+03  1.70492093e+03  1.66199683e+03  1.53948465e+03\n",
      "  1.33096008e+03  1.25591691e+03  1.15509389e+03  1.12410108e+03\n",
      "  1.03213798e+03  1.00972093e+03  9.50542179e+02  9.09791361e+02\n",
      "  8.32001551e+02  8.08898242e+02  7.37343627e+02  6.87596830e+02\n",
      "  5.64452104e+02  5.51812250e+02  5.37209115e+02  4.93029995e+02\n",
      "  4.13720573e+02  3.90222119e+02  3.37288784e+02  3.27558605e+02\n",
      "  3.08869553e+02  2.46285839e+02  2.28893093e+02  1.96447852e+02\n",
      "  1.75559820e+02  1.65795169e+02  1.56428052e+02  1.39671194e+02\n",
      "  1.28662864e+02  1.15624070e+02  1.10318239e+02  1.08663541e+02\n",
      "  1.00695416e+02  9.80687852e+01  8.34968275e+01  7.53025397e+01\n",
      "  6.89260158e+01  6.67786503e+01  6.09412873e+01  5.30974002e+01\n",
      "  4.71797825e+01  4.50701108e+01  4.41349593e+01  4.03313416e+01\n",
      "  3.95741636e+01  3.74000035e+01  3.44211326e+01  3.30031584e+01\n",
      "  3.03317756e+01  2.88994580e+01  2.76478754e+01  2.57708695e+01\n",
      "  2.44506430e+01  2.31640106e+01  2.26956957e+01  2.16925102e+01\n",
      "  2.10114869e+01  2.00984697e+01  1.86489543e+01  1.83733216e+01\n",
      "  1.72517802e+01  1.60481189e+01  1.54406997e+01  1.48356499e+01\n",
      "  1.44273357e+01  1.42318192e+01  1.35592064e+01  1.30696836e+01\n",
      "  1.28193512e+01  1.22093626e+01  1.15228376e+01  1.12141738e+01\n",
      "  1.02585936e+01  9.86906139e+00  9.58794460e+00  9.41686288e+00\n",
      "  9.20276340e+00  8.63791398e+00  8.20622561e+00  8.01020114e+00\n",
      "  7.53391290e+00  7.33168361e+00  7.09960245e+00  7.02149364e+00\n",
      "  6.76557324e+00  6.34504733e+00  6.01919292e+00  5.81680918e+00\n",
      "  5.44653788e+00  5.12338463e+00  4.79593185e+00  4.47851795e+00\n",
      "  4.50369987e+00  4.27479386e+00  3.89124198e+00  3.56466892e+00\n",
      "  3.32248982e+00  2.97665360e+00  2.61425544e+00  2.31802829e+00\n",
      "  2.17171124e+00  1.99239284e+00  1.96616566e+00  1.88149281e+00\n",
      "  1.79228288e+00  1.71378363e+00  1.68028783e+00  1.60686268e+00\n",
      "  1.47158244e+00  1.40656712e+00  1.37808906e+00  1.27967672e+00\n",
      "  1.22803716e+00  1.18531109e+00  9.38857180e-01  9.18222054e-01\n",
      "  8.26265393e-01  7.96585842e-01  7.74597255e-01  7.14002770e-01\n",
      "  6.79457797e-01  6.37928310e-01  6.24646758e-01  5.34605353e-01\n",
      "  4.60658687e-01  4.24265893e-01  4.08634622e-01  3.70321764e-01\n",
      "  3.67016386e-01  3.35858033e-01  3.29780397e-01  2.94348753e-01\n",
      "  2.84154176e-01  2.72703994e-01  2.63265991e-01  2.45227786e-01\n",
      "  2.25805135e-01  2.22331919e-01  2.13514673e-01  1.93961935e-01\n",
      "  1.91647269e-01  1.83668491e-01  1.82518017e-01  1.65310922e-01\n",
      "  1.57447909e-01  1.51263974e-01  1.39427297e-01  1.32638882e-01\n",
      "  1.28000027e-01  1.13559952e-01  1.12576237e-01  1.08809771e-01\n",
      "  1.07136355e-01  8.60839655e-02  8.50467792e-02  8.29254355e-02\n",
      "  7.03701660e-02  6.44475619e-02  6.09866327e-02  6.05709478e-02\n",
      "  5.93963958e-02  5.22163549e-02  4.92729703e-02  4.80022983e-02\n",
      "  4.51487439e-02  4.30180504e-02  4.13368324e-02  4.03281604e-02\n",
      "  3.91576587e-02  3.54198873e-02  3.31199510e-02  3.13547234e-02\n",
      "  3.07226509e-02  2.98354196e-02  2.81949091e-02  2.49158051e-02\n",
      "  2.36374781e-02  2.28360210e-02  2.19602047e-02  2.00166957e-02\n",
      "  1.86597535e-02  1.80415918e-02  1.72261012e-02  1.60703860e-02\n",
      "  1.49566735e-02  1.40165444e-02  1.31296856e-02  1.21358005e-02\n",
      "  1.07166503e-02  1.01045695e-02  9.76055340e-03  9.16740926e-03\n",
      "  8.78108857e-03  8.67465278e-03  8.30918514e-03  8.05104488e-03\n",
      "  7.56152126e-03  7.31508852e-03  7.26347037e-03  6.65728354e-03\n",
      "  6.50769617e-03  6.28009879e-03  6.19160730e-03  5.64130272e-03\n",
      "  5.30195373e-03  5.07453702e-03  4.47372286e-03  4.32543895e-03\n",
      "  4.22006582e-03  3.97065729e-03  3.75292740e-03  3.64861290e-03\n",
      "  3.38915810e-03  3.27965962e-03  3.06633825e-03  2.99206786e-03\n",
      "  2.83586784e-03  2.74987243e-03  2.31066313e-03  2.26782346e-03\n",
      "  1.82206662e-03  1.74955624e-03  1.69305161e-03  1.66624597e-03\n",
      "  1.55346749e-03  1.51278404e-03  1.47296800e-03  1.33617458e-03\n",
      "  1.30517592e-03  1.24056353e-03  1.19823961e-03  1.14381059e-03\n",
      "  1.13027458e-03  1.11081803e-03  1.08359152e-03  1.03517496e-03\n",
      "  1.00164593e-03  9.50024604e-04  8.94981182e-04  8.74363843e-04\n",
      "  7.98497544e-04  7.51612219e-04  6.63964301e-04  6.21097643e-04\n",
      "  6.18098604e-04  5.72611402e-04  5.57509230e-04  5.47002381e-04\n",
      "  5.27195076e-04  5.11487997e-04  4.87787872e-04  4.74249071e-04\n",
      "  4.52367688e-04  4.24431100e-04  4.19119024e-04  3.72489906e-04\n",
      "  3.38125455e-04  3.34002143e-04  2.97951371e-04  2.84845901e-04\n",
      "  2.79038287e-04  2.77054476e-04  2.67962796e-04  2.54815125e-04\n",
      "  2.29230595e-04  1.99245436e-04  1.90381389e-04  1.84497913e-04\n",
      "  1.77415682e-04  1.68160613e-04  1.63992030e-04  1.58025552e-04\n",
      "  1.54226003e-04  1.35736724e-04  1.40079892e-04  1.46097433e-04\n",
      "  1.46890640e-04  1.22704034e-04  1.16752515e-04  1.14080847e-04\n",
      "  1.04252870e-04  9.90265099e-05  9.66039063e-05  9.60766570e-05\n",
      "  9.16166346e-05  9.07003476e-05  8.60212633e-05  8.32654023e-05\n",
      "  7.70526076e-05  7.36470021e-05  7.24998306e-05  6.80209909e-05\n",
      "  6.68682701e-05  6.14500430e-05  5.99843180e-05  5.49918002e-05\n",
      "  5.24646951e-05  5.13403843e-05  5.02336254e-05  4.89288504e-05\n",
      "  4.51104474e-05  4.29823765e-05  4.18869715e-05  4.14341561e-05\n",
      "  3.94822845e-05  3.80307292e-05  3.57776535e-05  3.43901591e-05\n",
      "  2.98089203e-05  2.72388358e-05  1.46846459e-05  2.42608885e-05\n",
      "  1.66549051e-05  2.30962279e-05  2.27807559e-05  2.14440814e-05\n",
      "  1.96208174e-05  1.88276186e-05  1.91217363e-05  1.43753346e-05\n",
      "  1.39779892e-05  7.36188593e-06  1.21760519e-05  1.20295835e-05\n",
      "  8.34248007e-06  1.13426750e-05  1.09258905e-05  8.93991858e-06\n",
      "  9.23630207e-06  1.02782992e-05  1.01021810e-05  9.64538300e-06\n",
      "  9.72678797e-06  7.20354828e-06  6.69282813e-06  6.49477814e-06\n",
      "  5.91044556e-06  6.00244889e-06  5.67034893e-06  5.31392220e-06\n",
      "  5.09342484e-06  4.65422046e-06  4.45482134e-06  4.11265577e-06\n",
      "  3.48065951e-06  3.65202836e-06  3.77558985e-06  2.78847699e-06\n",
      "  2.57492503e-06  2.66299628e-06  2.39210232e-06  2.06298821e-06\n",
      "  2.00824521e-06  1.76373602e-06  1.58273269e-06  1.32211395e-06\n",
      "  1.44003524e-06  1.49813697e-06  1.10002716e-06  1.42489429e-06\n",
      "  9.01008864e-07  8.49881106e-07  7.62521870e-07  6.57641102e-07\n",
      "  5.85636641e-07  5.33937361e-07  4.16077216e-07  3.33765858e-07\n",
      "  2.95575265e-07  2.54744632e-07  2.20144574e-07  1.86314528e-07\n",
      "  1.77370970e-07  1.54794345e-07  1.39738552e-07  1.47331688e-07\n",
      "  1.04110968e-07  1.00786519e-07  9.38635091e-08  9.10853310e-08\n",
      "  8.71546326e-08  7.48338889e-08  6.06817435e-08  5.66479201e-08\n",
      "  5.24576912e-08  4.57020646e-08  2.89942624e-08  2.60449426e-08\n",
      "  2.10987990e-08  2.17618741e-08  1.75542294e-08  1.34637029e-08\n",
      "  1.27167437e-08  1.23258200e-08  1.04987513e-08  9.86367964e-09\n",
      "  8.49422040e-09  9.33428124e-09  7.42189761e-09  6.46870680e-09\n",
      "  6.84633797e-09  5.76455749e-09  5.01138012e-09  3.48686431e-09\n",
      "  2.77880627e-09  2.91267178e-09  1.73093441e-09  1.42391225e-09\n",
      "  1.80003583e-10  6.95073560e-10  6.13337791e-10  9.24977136e-10\n",
      "  1.16455057e-09  1.11815869e-09  1.97062440e-10  2.61925018e-10\n",
      "  5.27517926e-10  1.94882420e-15 -1.35801994e-15  5.42081315e-16\n",
      " -1.07767511e-17  1.47709396e-18  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00]\n",
      "eigVects: [[-6.39070760e-04 -1.20314234e-04  1.22460363e-04 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]\n",
      " [ 2.35722934e-05 -6.60163227e-04  1.71369126e-03 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]\n",
      " [ 2.36801459e-04  1.58026311e-04  3.28185512e-04 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]\n",
      " ...\n",
      " [ 2.61329351e-08 -6.06233975e-09  1.09328336e-09 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]\n",
      " [ 5.62597732e-09  5.96647587e-09  8.83024927e-09 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]\n",
      " [ 3.89298443e-04 -2.32070657e-04  7.13534990e-04 ...  0.00000000e+00\n",
      "   0.00000000e+00  0.00000000e+00]]\n"
     ]
    }
   ],
   "source": [
    "lowDDataMat, reconMat=pca(data,15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1567, 15)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
